﻿using System;
using System.ComponentModel;
using System.Runtime.InteropServices;

namespace Teigha.Core
{
	public interface OdGiConveyorGeometry
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		HandleRef GetCPtr();

		void plineProc(OdGiPolyline polyline, OdGeMatrix3d pXfm, uint fromIndex, uint numSegs);

		void plineProc(OdGiPolyline polyline, OdGeMatrix3d pXfm, uint fromIndex);

		void plineProc(OdGiPolyline polyline, OdGeMatrix3d pXfm);

		void plineProc(OdGiPolyline polyline);

		void polylineProc(OdGePoint3d[] numPoints, OdGeVector3d pNormal, OdGeVector3d pExtrusion, IntPtr baseSubEntMarker);

		void polygonProc(OdGePoint3d[] numPoints, OdGeVector3d pNormal, OdGeVector3d pExtrusion);

		void polygonProc(OdGePoint3d[] numPoints, OdGeVector3d pNormal);

		void polygonProc(OdGePoint3d[] numPoints);

		void xlineProc(OdGePoint3d firstPoint, OdGePoint3d secondPoint);

		void rayProc(OdGePoint3d basePoint, OdGePoint3d throughPoint);

		void meshProc(MeshData numRows);

		void shellProc(ShellData numVertices);

		void circleProc(OdGePoint3d center, double radius, OdGeVector3d normal, OdGeVector3d pExtrusion);

		void circleProc(OdGePoint3d firstPoint, OdGePoint3d secondPoint, OdGePoint3d thirdPoint, OdGeVector3d pExtrusion);

		void circularArcProc(OdGePoint3d center, double radius, OdGeVector3d normal, OdGeVector3d startVector, double sweepAngle, OdGiArcType arcType, OdGeVector3d pExtrusion);

		void circularArcProc(OdGePoint3d firstPoint, OdGePoint3d secondPoint, OdGePoint3d thirdPoint, OdGiArcType arcType, OdGeVector3d pExtrusion);

		void ellipArcProc(OdGeEllipArc3d ellipArc, OdGePoint3d[] endPointOverrides, OdGiArcType arcType, OdGeVector3d pExtrusion);

		void ellipArcProc(OdGeEllipArc3d ellipArc, OdGePoint3d[] endPointOverrides, OdGiArcType arcType);

		void ellipArcProc(OdGeEllipArc3d ellipArc, OdGePoint3d[] endPointOverrides);

		void ellipArcProc(OdGeEllipArc3d ellipArc);

		void nurbsProc(OdGeNurbCurve3d nurbsCurve);

		void textProc(OdGePoint3d position, OdGeVector3d direction, OdGeVector3d upVector, string msg, bool raw, OdGiTextStyle pTextStyle, OdGeVector3d pExtrusion);

		void textProc2(OdGePoint3d position, OdGeVector3d direction, OdGeVector3d upVector, string msg, bool raw, OdGiTextStyle pTextStyle, OdGeVector3d pExtrusion, OdGeExtents3d arg7);

		void shapeProc(OdGePoint3d position, OdGeVector3d direction, OdGeVector3d upVector, int shapeNumber, OdGiTextStyle pTextStyle, OdGeVector3d pExtrusion);

		void shapeProc(OdGePoint3d position, OdGeVector3d direction, OdGeVector3d upVector, int shapeNumber, OdGiTextStyle pTextStyle);

		void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary, bool transparency, double brightness, double contrast, double fade);

		void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary, bool transparency, double brightness, double contrast);

		void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary, bool transparency, double brightness);

		void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary, bool transparency);

		void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary);

		void metafileProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiMetafile pMetafile, bool dcAligned, bool allowClipping);

		void metafileProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiMetafile pMetafile, bool dcAligned);

		void metafileProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiMetafile pMetafile);

		void xlineProc2(OdGePoint3d basePoint, OdGeVector3d direction);

		void rayProc2(OdGePoint3d basePoint, OdGeVector3d direction);

		void setExtentsProc(OdGePoint3d arg0, bool arg1);

		void setExtentsProc(OdGePoint3d arg0);

		int ttfCharProcFlags();

		bool ttfCharProc(char arg0, OdGePoint3d arg1, OdGeBoundBlock3d arg2);

		void ttfPolyDrawProc(OdGePoint3d[] numVertices, int[] faceListSize, byte[] arg2, FaceData pFaceData);

		void ttfPolyDrawProc(OdGePoint3d[] numVertices, int[] faceListSize, byte[] arg2);

		void conveyorBoundaryInfoProc(OdGeBoundBlock3d arg0, out uint arg1);

		void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals, OdGeVector3d pExtrusions, IntPtr[] pSubEntMarkers);

		void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals, OdGeVector3d pExtrusions);

		void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals);

		void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints, OdCmEntityColor pColors);

		void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints);

		void rowOfDotsProc2(int numPoints, OdGePoint3d startPoint, OdGeVector3d dirToNextPoint);

		void polypointProc(OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals, OdGeVector3d pExtrusions, IntPtr[] pSubEntMarkers);

		void polypointProc(OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals, OdGeVector3d pExtrusions);

		void polypointProc(OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals);

		void polypointProc(OdGePoint3d[] numPoints, OdCmEntityColor pColors);

		void rowOfDotsProc(int numPoints, OdGePoint3d startPoint, OdGeVector3d dirToNextPoint);
	}
}
